Embedded computer devices, such as smartcards, typically contain one or more computer processors, memory, and other embedded hardware and software components. The software components typically include embedded applications, such as an embedded Java Virtual Machine (“eJVM”) and multiple applets.
It is often desirable to update embedded applications on an embedded computer device while the embedded applications are in communication with an external host application such that the embedded applications continue to run uninterrupted from the perspective of the external host application. This process is referred to as a concurrent embedded application update (“CEAU”). For example, a user may wish to utilize a CEAU to update an eJVM and applets embedded on a smartcard without rendering the smartcard unable to process requests from the perspective of a host application that is running on a host computer device.
To perform a CEAU, certain state information typically must be preserved so that it can later be restored and the embedded computer device can resume operating after the CEAU is complete. For example, state information for a smartcard may include the in-RAM state of the eJVM and the applets, which can include live objects and values of static fields. One known technique for preserving state information involves storing state information in persistent storage on the embedded computer device, such as in flash memory. However, accessing flash to later restore the information can be a slow process, and flash memory can degrade with use. Further, an eJVM and its applets can possess large amounts of state information, potentially to the extent that the amount of state information exceeds the persistent storage capacity of the embedded computer device and therefore cannot be entirely preserved. For example, embedded applications that perform cryptographic functions may manage large cryptographic key pools whose storage size exceeds the storage capacity of the flash memory on the embedded computer device.
A known alternative to preserving state information during a CEAU is to rebuild the state information after the CEAU is complete. However, for certain state information, such as cryptographic state information, rebuilding the information can be prohibitively expensive with respect to system resources, resulting in time delays that prevent a CEAU from being performed without interruption from the perspective of a host application.